package com.foreveross.mq;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.lang3.StringUtils;

import com.foreveross.taskservice.common.GlobalsConst;
/**
 * 数据空间
 * 利用数据空间的标识，可以在redis里面将数据的维度划分开来
 * 好处是数据清晰，可以保存多天数据，且多天数据不会交叉
 * 可以利用正则来直接del部分拥有数据空间标识的数据
 * 在这里我将date和任务的createTime结合起来，yyyyMMdd 这样就可以区分今天的数据和昨天的数据
 * 在清理数据或持久化部分数据的时候特别有用
 * 
 * @author Administrator
 *
 */
public final class CacheDataSpace {
	private String spaceString;
	private Date date;
	private String command;

	public String getCommand() {
		return command;
	}

	public void setCommand(String command) {
		this.command = command;
	}

	/**
	 * 格式如下:yyyyMMdd0001
	 * 任务创建日期+任务类型标识
	 * @param d
	 * @param type
	 */
	public CacheDataSpace(Date d, String command) {
		this.date = d;
		this.command = command;
		this.spaceString = new SimpleDateFormat("yyyyMMdd").format(this.date) + GlobalsConst.SEPARATOR_UNDERLINE
				+ StringUtils.leftPad(command + "", 6, "0");
	}
	
	public CacheDataSpace(String command) {
		this(new Date(), command);
	}

	public String toString() {
		return spaceString;
	}

	public String getSpace() {
		return spaceString;
	}

	public Date getDate() {
		return date;
	}

	public static void main(String[] args){
		System.out.println(new CacheDataSpace("REGISTER").getSpace());
	}
}
